Các thuật toán Biến_đổi_Fourier_nhanh

Thuật toán Cooley–Tukey

Thuật toán FFT phổ biến nhất là thuật toán FFT Cooley-Tukey[1]. Đây là một thuật toán chia để trị dùng đệ quy để chia bài toán tính DFT có kích thước hợp số N=N1N2, thành nhiều bài toán tính DFT nhỏ hơn có kích thước N1 và N2, cùng với O(N) phép nhân với căn của đơn vị, thường được gọi là thừa số xoay (theo Gentleman và Sande, 1966)[2].

Giải thuật biến đổi Fourier nhanh Cooley-Tukey cho mảng dài 8 phân tử

Phương pháp này (cùng với ý tưởng chung về một FFT) được phổ biến rộng rãi bởi bài báo của J. W. CooleyJ. W. Tukey năm 1965 nhưng sau đó người ta nhận ra rằng hai tác giả đó đã phát hiện lại một cách độc lập thuật toán mà Carl Friedrich Gauss đã tìm ra khoảng năm 1805 (và sau đó được phát hiện lại nhiều lần trong những trường hợp đặc biệt).

Dạng phổ biến nhất của thuật toán Cooley-Tukey là chia biến đổi thành hai nửa kích thước N / 2 ở mỗi bước (vì vậy chỉ dùng được cho kích thước là lũy thừa của 2) nhưng bất kì cách phân tích ra thừa số nào cũng đều có thể dùng được (điều này cả Gauss và Cooley/Tukey đều nhận ra). Đây là dạng cơ số 2 và dạng nhiều cơ số. Mặc dù ý tưởng cơ bản là đệ quy, khi lập trình, người ta thường sắp xếp lại thuật toán để tránh đệ quy. Ngoài ra, do thuật toán Cooley-Tukey chia một DFT thành các DFT nhỏ hơn, có thể phối hợp nó với các thuật toán khác cho DFT, chẳng hạn như những thuật toán mô tả dưới đây.

Các thuật toán FFT khác

Có nhiều thuật toán FFT khác ngoài Cooley-Tukey. Với N=N1N2 và N1, N2 nguyên tố cùng nhau, có thể dùng thuật toán FFT thừa số nguyên tố (thuật toán Good-Thomas), dựa trên [[định lý số dư Trung Quốc|định lý số dư Trung Hoa]], để phân tích DFT tương tự như Cooley-Tukey nhưng không cần thừa số xoay.

Thuật toán FFT cho số thực và dữ liệu đối xứng

Trong nhiều ứng dụng, dữ liệu vào cho DFT là số thực. Khi đó kết quả thỏa mãn điều kiện đối xứng sau

X N − k = X k ∗ , {\displaystyle X_{N-k}=X_{k}^{*},}

và nhiều thuật toán FFT hiệu quả được thiết kế cho trường hợp này. Một phương pháp là lấy một thuật toán thông thường (chẳng hạn Cooley-Tukey) rồi bỏ đi phần tính toán không cần thiết, do đó tiết kiệm khoảng một nửa thời gian và bộ nhớ cần thiết.